
#ifndef DESIGN_PATTERNS_OBSERVER_PUBLISHER_H
#define DESIGN_PATTERNS_OBSERVER_PUBLISHER_H

#include <list>
#include "Observer.h"
#include "Event.h"

class Publisher
{
private:
  std::list<Observer*>* observers_;

public:
  Publisher();

  void AddObserver(Observer* o);

  void DelObserver(Observer* o);

  void Publish(Event* e);

  ~Publisher();
};

#endif //DESIGN_PATTERNS_OBSERVER_PUBLISHER_H
